package main

import (
	"fmt"
	"go_cms/app/dto"
	"go_cms/routers"
	"go_cms/utils"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/logger"
)


func main(){
	// 初始化配置文件
	cfg, err := utils.ParseConfig("./config/app.json")
	if err != nil {
		utils.Lzlog.Error("init config app.json error")
		return
	}
	// 初始化日志配置
	utils.InitLogger()

	// 初始化数据库对象
	err = utils.InitDB(cfg)
	if err != nil {
		utils.Lzlog.Error("init DB error")
		return
	}

	app:=fiber.New()

	//app.Use(cors.New())
	app.Use(logger.New(logger.Config{
		TimeFormat: "2006-01-02 15:04:05.999",
		TimeZone:   "Asia/Shanghai",
	}))
	routers.InitRouters(app)
	//app.Post("/login",login)
	//
	//app.Use(utils.Auth())
	//app.Get("/", func(ctx *fiber.Ctx) error {
	//	return  ctx.SendString("hello world")
	//})

	err=app.Listen(cfg.AppHost + ":" + cfg.AppPort)
	if err!=nil{
		utils.Lzlog.Error("Server start error")
		return
	}

}



func login(ctx *fiber.Ctx) error{
	type request struct {
		Name string `json:"name"`
		Password string `json:"password"`
	}
	var body request
	err := ctx.BodyParser(&body)
	fmt.Println("body parsed",body)
	if err!=nil{
		return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{
			"error": "connot parse json",
		})

	}
	if body.Name!="lzz" || body.Password!="123456"{
		return ctx.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
			"error": "Bad credentials",
		})

	}
	tokenDto := dto.TokenDto{Username: body.Name}
	tokenstr, err := utils.SetToken(tokenDto)

	if err!=nil{
		return ctx.SendStatus(fiber.StatusInternalServerError)
	}
	return ctx.Status(fiber.StatusOK).JSON(fiber.Map{
		"token": tokenstr,
		"user": body,
	})
}